﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Web.Script.Services;
using System.ServiceModel.Web;
using System.IO;
using GtsServer.Service.Model;
using GtsServer.Service.Model.Response;

namespace GtsServer.Service.IISWcfService
{
    // 注意: 使用“重构”菜单上的“重命名”命令，可以同时更改代码和配置文件中的接口名“ITestService”。
    [ServiceContract]
    public interface ITestService
    {
        #region test
        //#region Get
        //[WebGet(UriTemplate = "/GetPrizeList", ResponseFormat = WebMessageFormat.Json)]
        //[OperationContract]
        //BaseResponse<PrizeListResponse> GetPrizeList();

        //[WebGet(UriTemplate = "/GetPrizeManageList", ResponseFormat = WebMessageFormat.Json)]
        //[OperationContract]
        //BaseResponse<PrizeManageResponse> GetPrizeManageList();

        //[WebGet(UriTemplate = "/GetPrizeDetail", ResponseFormat = WebMessageFormat.Json)]
        //[OperationContract]
        //BaseResponse<PrizeDetailResponse> GetPrizeDetail();

        //[WebGet(UriTemplate = "/GetPrizeRecord", ResponseFormat = WebMessageFormat.Json)]
        //[OperationContract]
        //BaseResponse<PrizeRecordResponse> GetPrizeRecord();
        //#endregion

        //[WebInvoke(Method = "POST", UriTemplate = "/GetPrizeListPost", ResponseFormat = WebMessageFormat.Json)]
        //[OperationContract]
        //BaseResponse<PrizeListResponse> GetPrizeListPost(Stream input);

        //[WebInvoke(Method = "POST", UriTemplate = "/GetPrizeManageListPost", ResponseFormat = WebMessageFormat.Json)]
        //[OperationContract]
        //BaseResponse<PrizeManageResponse> GetPrizeManageListPost(Stream input);

        //[WebInvoke(Method = "POST", UriTemplate = "/GetPrizeDetailPost", ResponseFormat = WebMessageFormat.Json)]
        //[OperationContract]
        //BaseResponse<PrizeDetailResponse> GetPrizeDetailPost(Stream input);

        //[WebInvoke(Method = "POST", UriTemplate = "/GetPrizeRecordPost", ResponseFormat = WebMessageFormat.Json)]
        //[OperationContract]
        //BaseResponse<PrizeRecordResponse> GetPrizeRecordPost(Stream input);
        #endregion

        #region 获取概率
        /// <summary>
        /// 获取概率
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetChance", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<ChanceResponse> GetChance(Stream input);
        #endregion

        #region logo获取版本及公告
        /// <summary>
        /// logo获取版本及公告
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetVersionAndNotice", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<VersionResponse> GetVersionAndNotice(Stream input);
        #endregion

        #region 彩蛋任务
        /// <summary>
        /// 获取彩蛋任务
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetCaidanTask", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<CaidanTaskResponse> GetCaidanTask(Stream input);

        /// <summary>
        /// 领取彩蛋
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/ReceiveCaidanTask", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<ReceiveCaidanResponse> ReceiveCaidanTask(Stream input);
        #endregion

        #region 奖品
        /// <summary>
        /// 奖品列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetPrizeList", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<PrizeListResponse> GetPrizeList(Stream input);

        /// <summary>
        /// 我的奖品列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetMyPrizeList", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<MyPrizeListResponse> GetMyPrizeList(Stream input);

        /// <summary>
        /// 奖品详情
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetPrizeDetail", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<PrizeDetailResponse> GetPrizeDetail(Stream input);

        /// <summary>
        /// 兑换奖品
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/ExchangePrize", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<ExchangePrizeResponse> ExchangePrize(System.IO.Stream input);

        /// <summary>
        /// 兑换奖品记录详情
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/ExchangePrizeDetail", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<PrizeRecordDetialResponse> ExchangePrizeDetail(System.IO.Stream input);

        #endregion

        #region 用户
        /// <summary>
        /// 用户注册
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/UserRegister", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<UserRegisterResponse> UserRegister(Stream input);

        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/UserLogin", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<UserLoginResponse> UserLogin(Stream input);
        #endregion

        #region 计费
        /// <summary>
        /// 支付宝
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/ChargeZfb", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<ChargeZfbResponse> ChargeZfb(Stream input);
        /// <summary>
        /// 神州付
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/ChargeSzf", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<ChargeSzfResponse> ChargeSzf(Stream input);


        /// <summary>
        /// 公用计费服务器 调用的接口
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/Charge", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        void Charge(Stream input);
        #endregion

        #region 比赛
        [WebInvoke(Method = "POST", UriTemplate = "/GetMatchList", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<MatchListResponse> GetMatchList(Stream input);

        [WebInvoke(Method = "POST", UriTemplate = "/GetMatchRank", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<MatchRankResponse> GetMatchRank(Stream input);
        #endregion

        #region 游戏主体
        /// <summary>
        /// 经典模式
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetGameMain", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<GameMainResponse> GetGameMain(Stream input);

        /// <summary>
        /// 比赛模式
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetGameTaskMatch", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<GameMainResponse> GetGameTaskMatch(Stream input);
        #endregion

        #region 物品
        /// <summary>
        /// 获取物品列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetGoodsList", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<GoodsListResponse> GetGoodsList(Stream input);


        /// <summary>
        /// 认领物品列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetClaimGoodsList", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<ClaimGoodsListResponse> GetClaimGoodsList(Stream input);


        /// <summary>
        /// 获取我的物品列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetMyGoodsList", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<MyGoodsListResponse> GetMyGoodsList(Stream input);


        /// <summary>
        /// 领取或丢弃物品
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/EditGoodsStutas", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<EditGoodsStutasResponse> EditGoodsStutas(Stream input);


        /// <summary>
        /// 获取商城中的金币界面列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetShopGoodsList", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<PrizeGoldResponse> GetShopGoodsList(Stream input);

        /// <summary>
        /// 购买物品
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/BuyGoods", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<BuyGoodsResponse> BuyGoods(Stream input);

        /// <summary>
        /// 通知领取物品
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/NoticeClaimGoods", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<NoticeClaimGoodsResponse> NoticeClaimGoods(Stream input);

        /// <summary>
        /// 使用道具
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/UseStage", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<UseStageResponse> UseStage(Stream input);
        #endregion

        #region 消息推送
        /// <summary>
        /// 消息推送
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/GetNewDelivery", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<NewDeliveryResponse> GetNewDelivery(Stream input); 
        #endregion

        #region 彩池模式
        /// <summary>
        /// 彩池模式（短连接）
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/LotteryPool", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<LotteryPoolResponse> LotteryPool(Stream input);

        /// <summary>
        /// 进入彩池模式（短连接）
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/LotteryPoolInit", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<LotteryPoolResponse> LotteryPoolInit(Stream input);

        /// <summary>
        /// 彩池模式 猜大小（短连接）
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/LotteryPoolGuess", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<LotteryPoolSizeResponse> LotteryPoolGuess(Stream input);

        /// <summary>
        /// 彩池模式 根据彩蛋排名(总排名)（短连接）
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/LotteryPoolRank", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<MatchRankResponse> LotteryPoolRank(Stream input); 
        #endregion

        #region 用户反馈
        /// <summary>
        /// 用户反馈
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/FeedBack", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<FeedBackResponse> FeedBack(Stream input); 
        #endregion

        #region 充值记录
        /// <summary>
        /// 充值记录
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/RechargeRecord", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<RechargeRecordResponse> RechargeRecord(Stream input);
        #endregion

        #region 用户推荐
        /// <summary>
        /// 推荐信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/InviteMsg", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<InviteMsgResponse> InviteMsg(Stream input);

        /// <summary>
        /// 验证推荐码
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/InviteVerif", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<InviteVerifReponse> InviteVerif(Stream input);


        /// <summary>
        /// 推荐提取金币
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [WebInvoke(Method = "POST", UriTemplate = "/InviteGetCoin", ResponseFormat = WebMessageFormat.Json)]
        [OperationContract]
        BaseResponse<InviteGetCoinResponse> InviteGetCoin(Stream input); 
        #endregion
    }
}
